Method and system for simulations of dynamic motion and position

ABSTRACT

Methods and systems for simulating dynamic motion and position. The methods and systems are particularly well-suited for use in sports simulation video games (e.g., a basketball simulation) and gaming systems. Using a simplified model of mass and structure and a physics engine, realistic movement can be mimicked by simulation/game entities. For each entity a sense of balance may be measured that affects the entities ability to achieve objectives. The entities are projected onto an n-dimensional space, the properties of which affect the probability that an entity will succeed with respect to a given objective. The methods and systems may be used to generate a visual representation of simulation, such as in a video game.

This application is a divisional application from, and claims the benefit of, U.S. patent application Ser. No. 12/508,462 filed on Jul. 23, 2009 to Wei, also entitled “Method and System For Simulations of Dynamic Motion and Position,” which claims the priority of U.S. Provisional Patent Application Ser. No. 61/135,719 filed on Jul. 23, 2008, which are incorporated herein in their entirety by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates generally to methods and systems for simulations of dynamic motion and position and, more specifically, to methods and simulations for such simulations used in video games.

2. Description of the Related Art

Sports simulation games are a popular component of the video game market. Although much progress has been made, certain games still lack the game play flow of the sports which they purport to simulate. For example, video games that simulate the game of basketball have become very popular. Sports and simulation games, such as flight simulators, have become a major industry unto themselves.

Sports simulations present particular challenges in terms of game design and execution because garners are familiar with the real-world games. In contrast with other types of games (e.g., fantasy games), where the environment and interactions between game entities are completely at the discretion of the game creators, aspects of sport simulations are dictated by the real-world sport itself. As a result, discrepancies between the virtual and real-world versions of a given sport are readily apparent to garners. This is especially true with sports, such as basketball, that are easily accessible either on television or through physical participation.

Many would consider the fundamental gamer objective in a video game is to have fun. In sport simulation games part of the fun is realistic competition. In competition of any type, the objective is always the same: to win. Garners will construct strategies within the simulated world in order to achieve this one objective. The greater the error between the simulation and the corresponding real world sport, the greater the discrepancies between these gamer constructed strategies and those of the sport itself. For games which are billed as sport simulations, and for the garners who purchase and play these games, an accurate simulation of dynamic motion and position is critical.

Certain sports lend themselves to simulation more so than others. For instance American football, with its discrete downs, resets at the line of scrimmage, and highly scripted plays, allows for accurate simulation. On the other hand, in sports such as basketball and soccer, a single instance of continuous play lasts much longer on average. Accordingly, simulation errors have greater time to accumulate and to become more apparent to the game player.

While scripted plays in American football are designed to create an opening which is instantly exploited, the scripted portion of a basketball play is used to create an opening which is often just the beginning of an offensive sequence. An initial opening is usually not large enough to instantly exploit, but does cause a sequence of rotations and player movements that can be used to create ever larger openings, which may be ultimately exploited. The result of this game play pattern is that continuous play sequences are not as mechanical, relying much more on flow and individual decisions.

For example one challenge in basketball simulation is the discrete nature of actions and movements. On many systems, a particular action/movement is executed with a directional input from thumb sticks and a combination of buttons. This input set is then mapped to a corresponding animation, which in turn takes a certain amount of time to complete before a subsequent input set may be read. While the number of button combinations allows for a large number of actions/movements, systems do not take full advantage of the available analog inputs. As a consequence, an action/movement is either executed in full or not executed at all. Along with controller input, player collisions can induce player movement. Delegating player movement to the animation system takes this responsibility away from the physics engine. Collisions are a large part of the game, and removing this responsibility from the physics engine introduces simulation error with significant ramifications in game play.

In addition to the discrete paradigm, the lack of a dynamic player balance measurement affects game play. Performing a number of actions, such as running around multiple screens, making multiple direction changes, getting bumped off course, or executing repeated crossovers and pivots, does not prevent a player from taking a perfectly stable squared up jump shot at the end of such a wild movement sequence. This aspect results in a bias favoring individual one-on-one play, de-emphasizing the importance of team play.

Finally and most importantly, the inadequate use of artificial intelligence has drastic effects on game play. For example, in real-world basketball a defender is constantly assessing the current threat posed by each offensive player and the ability of his teammates to affect those offensive players. This assessment is used to determine the defender's own optimal position to minimize offensive threats. In the same manner, an offensive player makes the same assessment and attempts to maximize his/her own offensive threat. Using this assessment, players dynamically adjust to the current situation based on their own abilities, the ability of their teammates and opponents, and the relative position of each player on the court. This player behavior is poorly modeled in modern games, resulting in a game flow that does not reflect actual basketball strategies and tactics.

Game play adjustments have been made in recent years in an attempt to address some of these issues. Computer controlled defensive players are allowed to make hyper-speed movements, making it exceedingly difficult for an offensive player to get by the on-ball defender and allowing off-ball defenders to easily recover to proper defensive positions. While this adjustment does indeed counter exploits of the current simulation model, it in no way results in a more realistic game flow. In fact, an adjustment that allows physics to be violated introduces additional simulation error as in-game openings and advantages fail to correlate with those observed in real-world basketball. This problem is observed in many different sports simulation games.

SUMMARY OF THE INVENTION

A method for simulating dynamic events in a video game according to one embodiment of the present invention comprises the following actions. Game entity instructions related to at least one game entity are received, the game entity instructions comprising instructions from artificial intelligence inputs. Game constants associated with said at least one game entity are called. A game entity balance measurement is calculated using a balance simulation model, wherein the instructions and the game constants are combined to generate a balance simulation model output. Game entity events are generated based on balance simulation model output.

A system for calculating game events according to one embodiment of the present invention comprises the following elements. An input module is configured to receive game entity information. A storage module is configured to store constants related to at least one game entity. A physics module is connected to apply game physics rules to information received in the input module and the constants. A balance simulation module is connected to control stability and movement of game entities using values from the physics module. An interaction handler module which combines input module outputs and balance simulation module outputs with game entity interaction rules generates game entity events. An artificial intelligence module determines actions of system controlled entities by combining game entity event information from the modules with game entity threat information. A game entity event output module for outputs game event simulation values.

A method for simulating game entity balance according to one embodiment of the present invention comprises the following actions. Constants related to at least one game entity are called. Instructions related to at least one game entity are received. The instructions and the constants are applied to a movement model related to the at least one game entity. The instructions and the constants are applied to a stability meter related to the at least one game entity. Outputs from the movement model and the stability meter are combined to generate a game entity balance value.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system-level architecture diagram according to one embodiment of the present invention.

FIG. 2 is a diagram of a date/execution path of components of a system according to one embodiment of the present invention.

FIG. 3 is a graph of speed versus time for a sprinting human being.

FIG. 4 is a perspective view of a damped mass-spring model.

FIG. 5 is a graph of pixel coordinate versus time sample.

FIG. 6 is a diagram of an exemplary court configuration according to an embodiment of the present invention.

FIG. 7 is a diagram modeling a defense mitt according to an embodiment of the present invention.

FIG. 8 is a graphic representation of a basketball court with a data set overlay modeling a shoot lookup surface according to one embodiment of the present invention.

FIG. 9 is a diagram of an exemplary court configuration according to an embodiment of the present invention.

FIG. 10 is a diagram of an exemplary court configuration relative to a basketball goal according to an embodiment of the present invention.

FIG. 11 is a diagram of a damped mass-spring model according to embodiments of the present invention.

FIG. 12 is a diagram of a damped mass-spring model used to model game entities relative to a basketball goal according to embodiments of the present invention.

FIG. 13 is a diagram of an exemplary court configuration according to an embodiment of the present invention.

FIG. 14 is a diagram of a game entity including associated gradient search data.

FIG. 15 is a diagram representing a scenario featuring sixteen game entities according to an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the invention described herein provide a new simulation and analysis model for dynamic games of movement and position. Although embodiments of the present invention are discussed with specific reference to a basketball game, it is understood that the methods and systems described herein may be applied to any sports game, simulation program, or computer software platform that models the motion and position of objects. Overall system architecture and specific algorithms are presented as embodiments of the present invention in the context of a basketball simulation; however, as stated above, the methods and systems are in no way limited to any particular application.

Although the ordinal terms first, second, etc. may be used herein to describe various elements, components, and/or modules, these elements, components, and/or modules should not be limited by these terms. These terms are only used to distinguish one element, component, and/or module from another. Thus, a first element, component, and/or module discussed below could be termed a second element, component, and/or module without departing from the teachings of the present invention.

FIG. 1 shows a system-level architecture diagram according to one embodiment of the present invention. The X-Input, MOGRE Newt, and MOGRE blocks represent foundation libraries on which the simulation is built. The Controller Input Handle and the Interaction Handler are event handlers. The Player Artificial Intelligence (AI) block represents an artificial intelligence engine. The Player 1 . . . 10 and Ball blocks represent In-Game Entities. The Top Level block represents a Master Scheduler/Book Keeper. Key elements of the simulation model are discussed below. It is understood that these elements may function as software implementations within a system or as discrete system modules themselves.

A physical movement model provides a framework for player movement, timing, and animation as well as providing a measure of player balance. This is implemented at the Player block.

The interaction handler enforces game-play rules, determining the outcome of all interactions between in-game entities. Some the interactions handled in a basketball game are dribbling, deflecting, stripping, shooting, passing, catching, etc. Other interactions may also be processed in the interaction handler.

A threat assessor determines the offensive threat posed by a given offensive player due to position relative to the goal as well as capability and position relative to other players. This system provides the analysis used by the Player Artificial Intelligence system. It comprises four assessments: a physical movement threat score which represents the static physical capabilities of a given player; a skills threat score which represents the dynamic skills capabilities of a given player; a dive threat score which represents the ability of a player to get to the goal based on current configuration of participating players; and a ball distance threat score which represents a player's threat due to proximity to the ball (e.g., the closer a player is to the ball the higher that player's ball distance threat score will be).

The Player Artificial Intelligence system determines the positions and actions of computer controlled players. It comprises three elements: defensive positioning which is a sub-system that determines optimal position of a defensive player based on threat assessments and player tendencies; offensive positioning which is a sub-system that determines optimal position of an offensive player based on threat assessments and player tendencies; and an action analyzer, which is a sub-system that determines when computer players perform certain actions.

FIG. 2 illustrates the data/execution path for the components discussed above according to one embodiment of the present invention. Inputs are received and outputs are sent to supporting components through an interface manager. From FIG. 2 it is possible to ascertain the data dependencies of the proposed system. Errors introduced by the Movement Model will propagate to both the Interaction Handler and Threat Assessor and to other components, following the flow of the data/execution path.

Of particular note is the feedback nature of player inputs from the Player AI system, with outputs from Defensive Positioning, Offensive Positioning, and Action Analyzer which provide inputs to the Movement Model. Thus, the simulation model is able to constantly react in real-time to changing game state. This feedback system does not, however, present the usual risks of error accumulation and system instability as the current game state is continually refreshed from the rest of the system.

As stated above, the simulation may be constructed upon a foundation of existing libraries, which provide basic functionality. Some of these libraries include the open source graphics engine OGRE3D which is advantageous for its powerful functionality, ease of use, and extensive documentation. The XInput component of DirectX provides the human/computer interface through a standard XBOX360 controller, for example. Finally, the free Newton Game Dynamics Engine is used to provide accurate and stable Newtonian physics behavior. All foundation components are publicly available, free of charge. The libraries listed herein are only exemplary; the simulation is not bound to these specific libraries. The interfaces between simulation code and foundation libraries are clearly defined, allowing for ease of extraction and implementation with other libraries in a commercial product.

Movement Model

Essential to the accurate construction of a sports simulation is an accurate Newtonian physics profile of human motion. FIG. 3 illustrates the acceleration curve for a human being running a 100 m sprint (albeit, a human being with world class speed). This curve is piece-wise approximated by three line segments and used as a foundation of data extrapolation.

The acceleration curve may be adjusted to typical desired player speeds. For example, in a basketball simulation game three-quarter court sprint times are available to the public on official web sites of professional basketball associations (e.g., the NBA). Thus motion, space, and time within the simulation world are firmly grounded in real world expectations. These constraints are firmly enforced, ensuring that physical realism propagates through the dependency tree shown in FIG. 2 to all simulation components. Likewise, in other kinds of simulations, other game constants can be included. For example, in a flight simulator data related to the acceleration and velocity characteristics of a given airplane may be included.

The human body is a complex system of bones, joints, muscles, and tendons that work in concert to produce a desired motion. While the motion profile data shown in FIG. 3 produce an accurate macro-model of human movement, it does not aid in modeling the relative motions of human body components. The human body is complex and for the sake of feasible implementation the minimal model displayed in FIG. 4 may be used, although other more complex models are possible.

Though simple, the model in FIG. 4 produces a significant amount of motion information pertinent to sports game play. It consists of a sphere solid 40 representing the top half of the human body and a rectangular solid 42 representing the bottom half. Total mass is distributed evenly with a spring damper 44 connecting these two solid masses. All external forces are applied to the spherical upper portion 40 only while the spring damper 44 enables movement tracking of the upper portion 40 by the lower portion 42, modeling the relative motion of the upper and lower body.

This model provides a framework that can be used to transform scripted animation sequences. More detailed human movement not directly related to game play can be motion captured and mixed with the information provided by the underlying human model. The dynamic state of the player body provided by this simple model can be used to produce more expressive non-discrete animations from a seed set of discrete motion captured animations.

Beyond animation, this model affects game play by producing realistic movement delays and reaction to external forces. Every lateral acceleration or jump requires a gathering phase which is modeled by a necessary compression of the spring damper proportional to level of acceleration. Thus, realistic movement time delays are enforced affecting overall player movement. The model provides a sense of balance that can be quantified dynamically for each game entity.

A stability meter measures the sense of balance for each in-game player. The simulation models the human upper body as a sphere of same volume and mass as the upper body portion of the player model. This solid mass is attached to the player upper body solid mass through a spring damper similar to the lower body solid mass except relative movement is constrained to the horizontal plane. As external forces are applied to the upper body solid mass, these forces are transferred indirectly to the stability meter solid mass through the spring damper.

The stability meter tracks the motion of the upper body with a certain delay and convergence time. The aggregate stability score ε[i] of player i is shown in Equation 1, where:

-   -   W_(Δposition), W_(Δvelocity), W_(Δθ), and W_(Δω) are weighting         factors for position, velocity, angle, and angular velocity,         respectively;     -   P_(upper)[i], V_(upper)[i], θ_(upper)[i], and ω_(upper)[i] are         position, velocity, angle, and angular velocity of the player         upper body solid mass, respectively;     -   P_(meter)[i], V_(meter)[i], θ_(meter)[i], and ω_(meter)[i] are         position, velocity, angle, and angular velocity of the stability         meter solid mass, respectively; and     -   ΔP_(max), ΔV_(max), Δθ_(max), and Δω_(max) are the position,         velocity, angle, and angular velocity offsets between upper body         and stability meter solid masses, respectively.

$\begin{matrix} {\mspace{79mu} {{{Stability}\mspace{14mu} {Measurement}}{{\varepsilon \lbrack i\rbrack} = {1 - {W_{\Delta \; {position}}*\frac{{{P_{upper}\lbrack i\rbrack} - {P_{meter}\lbrack i\rbrack}}}{\Delta \; P_{\max}}} - {W_{\Delta \; {velocity}}*\frac{{{V_{upper}\lbrack i\rbrack} - {V_{meter}\lbrack i\rbrack}}}{\Delta \; V_{\max}}} - {W_{\Delta \; \Theta}*\frac{{{\Theta_{upper}\lbrack i\rbrack} - {\Theta_{meter}\lbrack i\rbrack}}}{\Delta \; \Theta_{\max}}} - {W_{\Delta \; \omega}*\frac{{{\omega_{upper}\lbrack i\rbrack} - {\omega_{meter}\lbrack i\rbrack}}}{\Delta \; \omega_{\max}}}}}}} & {{Eq}.\mspace{14mu} 1} \end{matrix}$

From Equation 1, it is observed that when the upper body and stability meter are perfectly matched, the player stability equals one, and as deviation arises along the measurement parameters the stability measurement is degraded. FIG. 5 shows this tracking behavior through experimentally gathered data.

This measurement of stability is performed for each simulation time step, uninterrupted by player state transitions, and is utilized in both threat assessment and interaction calculations as described below.

Interaction Handler

In-game interactions between player entities are handled by the Interaction Handler. This system enforces game rules and determines the outcome of interactions based on the static and dynamic parameters of the participant players. In one embodiment (i.e. a basketball simulation) the interactions handled by this unit are: dribbling, deflecting, stripping, shooting passing, and catching.

The amount of defensive pressure experienced by an offensive player while performing an action is determined by the relative positions and capabilities of the participant players. In FIG. 6, an example court configuration is shown, where: node o1 represents the offensive player; nodes d1, d2, and d3 represent the defensive players; and vectors r1, r2, and r3 represent displacement vectors from the offensive player to respective defensive players.

Capability is defined as a player's ability with respect to a particular aspect of the game and may be measured as a success probability for a given action. Each of the interactions listed above involves an interplay between offensive and defensive player capabilities. The overall score for a particular capability C_(overall)[i] of offensive player i is computed as shown in Equation 2, where:

-   -   C_(offensive)[i] is the computed offensive capability of         offensive player i;     -   N is the number of defensive players involved in the         interaction;     -   C_(defensive)[k] is the computed defensive capability of         defensive player k;     -   r_(ik) is the vector magnitude from a reference point of the         offensive player i to a reference point of defensive player k         (for different interactions, different offensive and defensive         reference points may be used);     -   α_(C) is a tunable effect scaling factor for defensive pressure         of capability C;     -   β_(C) is a tunable range scaling factor for defensive pressure         of capability C; and     -   C_(offset) is a tunable probability offset for particular         capability interaction C.

$\begin{matrix} {{{Offense}\text{/}{Defense}\mspace{14mu} {Interaction}}{{C_{overall}\lbrack i\rbrack} = {{C_{offensive}\lbrack i\rbrack} - {\alpha_{C}*{\sum\limits_{k = 0}^{N - 1}\; \frac{C_{defensive}\lbrack k\rbrack}{1 + \left( {\beta_{C}*r_{ik}} \right)^{2}}}} + C_{offset}}}} & {{Eq}.\mspace{14mu} 2} \end{matrix}$

The calculations for the specific offensive and defensive capabilities C_(offensive)[i] and C_(defensive)[i] of player i are discussed in detail below. Equation 2 indicates that the effect exerted by a particular defensive player falls off by a square exponential as the distance from offensive player increases. This behavior mirrors the Coulomb's Law relationship discussed below with regard to determining optimal defensive position.

For all interactions described in this section, the following terms are defined:

-   -   x_(rand) refers to a uniformly distributed random number         satisfying inequality 0≦x_(rand)≦1 (the parameter x_(rand) is         used to introduce a random component into interaction         calculations);     -   ε[i] refers to player i's stability measurement;     -   B_(static)[i] refers to i's static body control parameter, which         determines the magnitude of player i's capability degradation         due to instability;     -   ξ_(scale)[k] is the fraction of defensive player k's scale         parameter ξ_(static)[k] to maximum value ξ_(max);     -   φ_(static)[i] refers to offensive player i's traffic parameter,         which determines the magnitude of player i's capability         degradation due to traffic.

$\begin{matrix} {{{Defensive}\mspace{14mu} {Mitt}\mspace{14mu} {Scale}\mspace{14mu} {Percentage}}{{\xi_{scale}\lbrack k\rbrack} = \frac{\xi_{static}\lbrack k\rbrack}{\xi_{\max}}}} & {{Eq}.\mspace{14mu} 3} \end{matrix}$

In some embodiments of the present invention, a static parameter is defined as a player specific parameter which is invariant of time and state. These pre-defined static parameters or game constants together constitute a player profile describing all characteristics and capabilities and are used as inputs to the dynamic system.

Defensive interactions are initiated by contact between a defensive player's defensive mitt and the ball. The defensive mitt represents a defensive player's hands and is modeled by a circular surface representing a probability density field. Upon contact, the probability percentage value ξ_(percent) is computed as shown in Equation 4, where parameters r_(contact) and r_(max) are illustrated in FIG. 7.

$\begin{matrix} {{{Defensive}\mspace{14mu} {Mitt}\mspace{14mu} {Contact}\mspace{14mu} {Percentage}}{\xi_{percent} = {1 - \frac{r_{contact}}{r_{\max}}}}} & {{Eq}.\mspace{14mu} 4} \end{matrix}$

In a basketball simulation the Interaction Handler also handles defensive interactions including deflect and strip interactions.

The deflect interaction is handled for any time step in which the ball is being passed and contacts a defensive player's defensive mitt. Defensive player k's deflect capability D[k] is expressed in Equation 5, where ξ_(percent) is defined in Equation 4.

D[k]=ξ _(percent)−(1−ε[k])*(1−B _(static) [k])  Eq.5: Deflect Capability

D_(offset) refers to a tunable probability offset for the deflect interaction and C_(clean) refers to a tunable clean catch probability threshold. If the inequality expressed in Equation 6 is satisfied, defensive player k will be able to perform a clean catch of the ball and obtain possession.

D[k]−x _(rand) +D _(offset) >C _(clean)  Eq.6: Deflect Inequality (Clean Catch)

Otherwise, if the inequality expressed in Equation 7 is satisfied, defensive player k will deflect the ball from its flight path but not obtain possession.

D[k]−x _(rand) +D _(offset)>0  Eq.7: Deflect Inequality (Deflect)

The strip interaction is handled for any time step in which a strip is being attempted and the ball contacts a defensive player's defensive mitt. Defensive player k's strip capability S[k] is expressed in Equation 8, where ξ_(percent) is defined in Equation 4.

S[k]=S _(static) [k]*ξ _(percent)−(1−ε[k])*(1−B _(static) [k])

Depending on whether the ball is being dribbled or held, different conditions must be met for a successful strip attempt. D_(overall)[i] refers to the ball possessor player i's current dribbling score as discussed above. If the inequality expressed in Equation 9 is satisfied and the ball is currently in a dribble state, defensive player k will be able to perform a successful ball strip. Otherwise, if the inequality expressed in Equation 10 is satisfied and the ball is currently in a held state, defensive player k will be able to perform a successful ball strip. The terms σ_(static)[k], D_(bonus), and S_(offset) refer to defensive player k's strength, the tunable possessor strength bonus to be applied for held state strip attempts, and the tunable strip attempt probability offset parameter, respectively.

S[k]−D _(overall) [i]−x _(rand) +S _(offset)>0  Eq.9: Strip Outcome Inequality (Dribble)

S[k]−(σ_(static) [k]*D _(bonus) +D _(overall) [i])−x _(rand) +S _(offset)>0  Eq.10: Strip Outcome Inequality (Hold)

In a basketball simulation, the Interaction Handler also handles offensive interactions such as the dribble, shoot, pass, and catch interactions.

The dribble interaction is handled for any time step in which the basketball is in a dribbled state. Offensive player i's dribble capability D[i] is expressed in Equation 11, where D_(static)[i] refers to player static dribbling capability parameter.

D[i]=D _(static) [i]−(1−ε[i])*(1−B _(static) [i])  Eq.11: Dribble Capability

Defensive player k's dribble pressure capability P[k] is expressed in Equation 12, where D_(static)[i] refers to player k's static dribble pressure capability parameter.

P[k]=P _(static) [k]−(1−ε[k])*(1−B _(static) [k])  Eq.12: Dribble Pressure Capability

Substituting terms D[i] for C_(offensive)[k] and P[k] for C_(defensive)[k] in Equation 2, and substituting associated dribble interaction parameters for tunable parameters α_(C), β_(C), and C_(offset) produces the overall dribble interaction value D_(overall)[i]. For the dribble interaction, the reference points producing term r_(ik) are the positions of player i and k. If the resultant inequality expressed in Equation 13 is not satisfied, player i will lose control of the ball as a result of an errant dribble.

D _(overall) [i]−x _(rand)>0  Eq.13: Dribble Outcome Inequality

The shoot interaction is handled for any time step in which a shot is released. Offensive player i's shoot capability S[i] is expressed in Equation 14, where S_(lookup)(i, R[i]) refers to player i's static shooting ability from a particular point on the court.

S[i]=S _(lookup)(i,R[i])−(1−ε[i])*(1−B _(static) [i])  Eq.14: Shoot Capability

In FIG. 8, an example shoot lookup surface is shown. A shoot lookup surface is defined as a shot make percentage for a given distance from goal 80 and angle deviation from face-on to the goal 80. Shot make percentages are defined for a discrete number of distance and angle combinations and intermediate points are linearly interpolated to produce a continuous shot probability surface. This continuous surface is also used in the offensive positioning algorithms discussed below. In FIG. 8, darker shades represent areas of high shot make percentages and lighter shades represent low shot make percentages.

Defensive player k's shoot pressure capability D[k] is expressed in Equation 15, where E_(elevation)[k] is an expression of relative elevation advantage, as shown in Equation 16 and to be described below in more detail.

D[k]=E _(elevation) [k]*(1−φ_(static) [k])*(ξ_(scale) [k]−(1−ε[k])*(1−B _(static) [k]))  Eq.15: Shoot Pressure Capability

The parameters in Equation 16 for E_(elevation)[k] are defined as:

-   -   H_(defMitt)[k] is the current height of defensive player k's         defensive mitt;     -   H_(ball) is the current height of the ball at release point; and     -   ΔH_(max) is the maximum elevation deviation range allowed.

$\begin{matrix} {{Elevation}\mspace{14mu} {Effect}} & \; \\ {{E_{elevation}\lbrack k\rbrack} = \frac{{H_{defMitt}\lbrack k\rbrack} - H_{hall} + {\Delta \; H_{\max}}}{2*\Delta \; H_{\max}}} & {{Eq}.\mspace{14mu} 16} \end{matrix}$

Substituting terms S[i] for C_(offensive)[i] and D[k] for C_(defensive)[k] in Equation 2 and substituting associated shoot interaction parameters for tunable parameters α_(C), β_(C), and C_(offset) produces the overall shoot interaction value S_(overall)[i]. For the shoot interaction, the reference points producing term r_(ik) are the positions of the ball and defensive player k's defensive mitt. If the resultant inequality expressed in Equation 17 is not satisfied, player i's shot attempt will be unsuccessful.

S _(overall) [i]−x _(rand)>0  Eq.17: Shoot Outcome Inequality

The pass interaction is handled for any time step in which a pass is released. Offensive player i's pass capability P[i] is expressed in Equation 18, where P_(static)[i] refers to player i's static passing capability parameter.

P[i]=P _(static) [i]−(1−ε[i])*(1−B _(static) [i])  Eq.18: Pass Capability

Defensive player k's pass pressure capability D[k] is expressed in Equation 19.

D[k]=(1−φ_(static) [i])*(ξ_(scale)−(1−ε[k])*(1−B _(static) [k]))  Eq.19: Pass Pressure Capability

Substituting terms for P[i] for C_(offensive)[i] and D[k] for C_(defensive)[k] in Equation 2 and substituting associated pass interaction parameters for tunable parameters α_(C), β_(C), and C_(offset) produces the overall pass interaction value P_(overall)[i]. For the pass interaction, the reference points producing term r_(ik) are the positions of the ball and defensive player k's defensive mitt. Defensive pressure will not prevent the pass to be thrown, but instead produces pass directional error which in turn makes it more difficult or impossible for the pass recipient to catch the ball. The pass error produced is expressed in Equation 20.

E _(pass)=(1−P _(overall) [i])*E _(max)  Eq.20: Pass Error Magnitude

The catch interaction is handled for any time step in which an in-flight pass is within catching range of an offensive player. Offensive player i's catch capability C[i] is expressed in Equation 21, where C_(static)[i] refers to player i's static catching capability parameter.

C[i]=C _(static) [i]−(1−ε[i])*(1−B _(static) [i])  Eq.21: Catch Capability

Defensive player k's catch pressure capability D[k] is expressed in Equation 22, where Υ_(static)[i] refers to player i's in-traffic catching ability.

D[k]=(1−φ_(static) [i])*(ξ_(scale)−(1−ε[k])*(1−B _(static) [k]))  Eq.22: Catch Pressure Capability

Substituting terms C[i] for C_(offensive)[i] and D[k] for C_(defensive)[k] in Equation 2 and substituting associated catch interaction parameters for tunable parameters α_(C), β_(C), and C_(offset) produces an intermediate catch interaction value C_(intermediate)[i]. For the catch interaction, the reference points producing term r_(ik) are the positions of the ball and defensive player k's defensive mitt. Additional factors affecting catch success must be accounted for to produce C_(overall)[i], as shown in Equation 23 where:

-   -   E_(pass) is the distance of the ball from an ideal catch point;     -   C_(accEffect) is the tunable parameter determining effect of         accuracy on catch probabilities;     -   V_(ball) and V_(max) are the current and maximum ball         velocities; and     -   C_(velEffect) is the tunable parameter determining effect of         velocity on catch probabilities.

$\begin{matrix} {{Overall}\mspace{14mu} {Catch}\mspace{14mu} {Value}} & \; \\ {{C_{overall}\lbrack i\rbrack} = {{C_{intermediate}\lbrack i\rbrack} - {E_{pass}*C_{accEffect}} - {\frac{V_{ball}}{V_{\max}}*C_{velEffect}}}} & {{Eq}.\mspace{14mu} 23} \end{matrix}$

If the resultant inequality expressed in Equation 24 is not satisfied, player i's catch attempt will be unsuccessful.

C _(overall) [i]−x _(rand)>0  Eq.24: Catch Outcome Inequality

Threat Assessor

The composite threat assessment for a given offensive player comprises four independent assessments:

-   -   Physical Movement Threat Score—a measure of the static physical         capabilities of a given player;     -   Skills Threat Score—a measure of the dynamic skills capabilities         of a given player;     -   Dive Threat Score—a measure of the ability of a player to get to         the rim based on current configuration of participating players;         and     -   Ball Distance Threat Score—a measure of the player's threat due         to proximity to the ball; the closer the player is to the ball         the higher the player's ball distance threat score.

These component threat scores are combined to produce an overall offensive player threat score used to determine the actions of both defensive and offensive players. Offensive players attempt to maximize their own assessment; while defensive players attempt to minimize the assessment of their opponents.

The physical capability P[i] of player i is computed as a weighted aggregate of the player's various physical characteristics (reflected in game constants), as shown in Equation 25 where:

-   -   W_(height), W_(jump), W_(mass), W_(strength), and W_(accel) are         the relative weighting factors for each physical movement score         component;     -   H_(static)[i], J_(static)[i], M_(static)[i], S_(static)[i], and         A_(static)[i] are the player's static values for height, jump,         mass, strength, and lateral acceleration, respectively;     -   H_(max), J_(max), M_(max), S_(max), and A_(max) are the maximum         values for height, jump, mass, strength, and lateral         acceleration, respectively; and     -   R[i] and R_(max) are the player's distance and maximum distance         from the basket, respectively.

$\begin{matrix} {{Physical}\mspace{14mu} {Movement}\mspace{14mu} {Capability}\mspace{14mu} {Value}} & \; \\ {{P\lbrack i\rbrack} = {{W_{height}*\left( \frac{H_{static}\lbrack i\rbrack}{H_{\max}} \right)} + {W_{jump}*\left( \frac{J_{static}\lbrack i\rbrack}{J_{\max}} \right)} + {W_{mass}*\left( \frac{M_{static}\lbrack i\rbrack}{M_{\max}} \right)\left( {1 - \frac{R\lbrack i\rbrack}{R_{\max}}} \right)} + {W_{strength}*\left( \frac{S_{static}\lbrack i\rbrack}{S_{\max}} \right)\left( {1 - \frac{R\lbrack i\rbrack}{R_{\max}}} \right)} + {W_{accel}*\left( \frac{A_{static}\lbrack i\rbrack}{A_{\max}} \right)\left( \frac{R\lbrack i\rbrack}{R_{\max}} \right)}}} & {{Eq}.\mspace{14mu} 25} \end{matrix}$

The closer the player is to the basket, the higher the player's mass and strength values, and the lower the player's acceleration value. In real-world basketball quicker players have the advantage on the perimeter as there is more room for movement. In contrast, bigger, stronger players have an advantage near the basket where there is less area to move and contact and collisions are a way of life. The dynamic component to a player's physical motion score based on range from the basket emphasizes or de-emphasizes the importance of these characteristics to match real-world physical advantages. The offensive player i's final physical movement score P_(overall)[i] is computed by substituting P[i] for C_(offensive)[i] and P[k] of the defensive players for C_(defensive)[k] into Equation 2.

Player i's skill capability Ω[i] is computed as a weighted aggregate of the player's various skill characteristics. The skill capability for the offensive ball possessor is shown in Equation 26 where:

-   -   W_(pass), W_(catch), W_(shoot) and W_(dribble) are the relative         weighting factors for pass, catch, shoot and dribble score         components, respectively;     -   P_(overall)[i], C_(overall)[i], S_(overall)[i] and         D_(overall)[i] are the player's pass, catch, shoot and dribble         values, respectively; and     -   R[i] and R_(max) are the player's distance and maximum distance         from the basket, respectively.

$\begin{matrix} {{Skill}\mspace{14mu} {Capability}\mspace{14mu} {Value}\mspace{14mu} \left( {{Ball}\mspace{14mu} {Possessor}\mspace{14mu} {Offense}} \right)} & \; \\ {{\Omega \lbrack i\rbrack} = {{W_{pass}*{P_{overall}\lbrack i\rbrack}} + {W_{catch}*{C_{overall}\lbrack i\rbrack}} + {W_{shoot}*{S_{overall}\lbrack i\rbrack}} + {W_{dribble}*{D_{overall}\lbrack i\rbrack}*\left( \frac{R\lbrack i\rbrack}{R_{\max}} \right)}}} & {{Eq}.\mspace{14mu} 26} \end{matrix}$

The off-ball offensive player i's skill capability Ω[i] is shown in Equation 27 where:

-   -   W_(pass), W_(catch), W_(shoot) and W_(dribble) are the relative         weighting factors for pass, catch, shoot and dribble score         components, respectively;     -   P_(overall)[i], C_(overall)[i], S_(overall)[i] and         D_(overall)[i] are the player's pass, catch, shoot and dribble         values, respectively;     -   ν(i,j)=P_(overall)[i]*(1−Φ_(deflect)[i,j])*C_(overall)[j], where         player i is the ball possessor and Φ_(deflect)[i,j] is the         predicted probability that the pass from player i to player j is         deflected; and     -   R[i] and R_(max) are the player's distance and maximum distance         from the basket, respectively.

$\begin{matrix} {{Skill}\mspace{14mu} {Capability}\mspace{14mu} {Value}\mspace{14mu} \left( {{Off}\text{-}{Ball}\mspace{14mu} {Offense}} \right)} & \; \\ {{\Omega \lbrack i\rbrack} = {\vartheta \; \left( {j,i} \right)*\left( {W_{catch} + {W_{pass}*{P_{overall}\lbrack i\rbrack}} + {W_{shoot}*{S_{overall}\lbrack i\rbrack}} + {W_{dribble}*{D_{overall}\lbrack i\rbrack}*\left( \frac{R\lbrack i\rbrack}{R_{\max}} \right)}} \right)}} & {{Eq}.\mspace{14mu} 27} \end{matrix}$

The further player i is from the basket, the less significant the player's dribbling value D_(overall)[i]. Equation 27 includes an additional term ν[i] as player i's ability to pass, shoot, or dribble is dependent on a successful pass from ball possessor k and catch from off-ball player i.

The predicted deflect value Φ_(deflect)(j,i) is computed by the Threat Scorer and not the Interaction Handler. This is necessary because the Interaction Handler computes a probability of deflection once the ball contacts a defensive mitt surface and does not predict an aggregate probability of ball deflection through the flight path of the ball. The computation for Φ_(deflect)[i,j] is shown in Equation 28 where:

-   -   D[k] is defensive player k's ball deflection capability as shown         in Equation 5 (the value ξ_(percent) is not determined as no         deflection has yet taken place and is estimated by

$\left. \frac{\xi_{scale}}{2} \right);$

-   -   D_(offset) is the tunable pass deflection probability offset         parameter;     -   N is the number of defensive players in position to affect         passing lane;     -   θ_(k)[i,j] is defensive player k's angle off the vector from         passing player i to catching player j of player k as shown in         FIG. 9;     -   θ_(max) is the maximum considered value for θ_(k)[i,j];     -   R[i,k] is the vector from passing player i to defensive player k         as shown in FIG. 9; and     -   R[i,j] is the vector from passing player i to catching player j         as shown in FIG. 9.

$\begin{matrix} {{Predicted}\mspace{14mu} {Deflect}\mspace{14mu} {Value}} & \; \\ {{\varphi_{deflect}\left\lbrack {i,j} \right\rbrack} = {\left( {{D\lbrack k\rbrack} + D_{offset}} \right)*{\sum\limits_{k = 0}^{N - 1}\; \frac{{\theta_{k}\left\lbrack {i,j} \right\rbrack}*{{R\left\lbrack {i,k} \right\rbrack}}}{\theta_{\max}*{{R\left\lbrack {i,j} \right\rbrack}}}}}} & {{Eq}.\mspace{14mu} 28} \end{matrix}$

The parameters P_(overall)[i], C_(overall)[i] and D_(overall)[i] for pass, catch and dribble are computed through the Interaction Handler as described previously with minimal adjustments. The shoot value S_(overall)[i] is computed slightly differently than in the Interaction Handler, as the relative ball and defense mitt positions at time of ball release on shot must be predicted. A predicted elevation advantage δ_(static)[k,i] is computed from the static parameters of players k and i as shown in Equation 29 where:

-   -   W_(height) and W_(jump) are relative weighting factors for         height and jumping values;     -   H_(static)[i] and H_(static)[k] are the height values for         players i and j; and     -   J_(static)[i] and J_(static)[k] are the jump values for players         i and j.

δ_(static) [k,i]=W _(height)*(H _(static) [k]−H _(static) [i])+W _(jump)*(J _(static) [k]−J _(static) [i])  Eq.29: Predicted Elevation Advantage

The predicted elevation advantage is used to compute the elevation effect E_(elevation)[k] as shown in Equation 30, where ΔH_(max) is the maximum predicted elevation advantage allowed.

$\begin{matrix} {{Predicted}\mspace{14mu} {Elevation}\mspace{14mu} {Effect}} & \; \\ {{E_{elevation}\left\lbrack {k,i} \right\rbrack} = \frac{{\delta_{static}\left\lbrack {k,i} \right\rbrack} + {\Delta \; H_{\max}}}{2*\Delta \; H_{\max}}} & {{Eq}.\mspace{14mu} 30} \end{matrix}$

The parameter E_(elevation)[k,i] is substituted for E_(elevation)[k] in Equation 15, from which point the Interaction Handler is used to produce term S_(overall)[i].

A player's dive threat D[i] is a measurement of an offensive player's potential to reach the rim. This parameter is computed as shown in Equation 31 where:

-   -   W_(velocity) is the relative importance weighting of velocity to         dive threat in relation to open lane threat φ;     -   R[i] is the range vector from offensive player i to the goal;     -   V[i] and V_(max) are offensive player i's velocity vector and         maximum velocity magnitude, respectively;     -   φ is an aggregate measure of congestion of a driving lane;

N is the number of defensive players in position to affect driving lane;

-   -   θ_(k) and θ_(max) are the angle off vector to goal of player k         and maximum value of θ_(k), respectively (θ_(k) is shown in FIG.         10);     -   R[i,k] and R_(max) are the range from offensive player i to         defensive player k and the maximum value of R[i,k], respectively         (R[i,k] is shown in FIG. 10); and     -   A_(static)[k] and A_(max) are the static acceleration parameter         of defensive player k and the maximum acceleration value,         respectively.

$\begin{matrix} {{Dive}\mspace{14mu} {Threat}\mspace{14mu} {Score}} & \; \\ {{D\lbrack i\rbrack} = {{W_{velocity}*\frac{\overset{\_}{R\lbrack i\rbrack} \cdot \overset{\_}{V\lbrack i\rbrack}}{V_{\max}}} + {\left( {1 - W_{velocity}} \right)*\overset{\overset{\varphi}{}}{\left( {1 - {\sum\limits_{k = 0}^{N - 1}\; \frac{\theta_{k}*{{R\left\lbrack {i,k} \right\rbrack}}*{A_{static}\lbrack k\rbrack}}{\theta_{\max}*R_{\max}*A_{\max}}}} \right)}}}} & {{Eq}.\mspace{14mu} 31} \end{matrix}$

The ball distance threat score B[i] for offensive player i is computed based on distance from ball possessor k. The closer a player is to the ball, the more likely the player will be to receive a pass from the ball possessor. Additionally, the closer the player is to the ball, the less time defenders have to react to the pass. The ball distance score B[i] is shown in Equation 32 where:

-   -   β is a tunable range scaling factor; and     -   r_(ik) is the vector from player i to player k.

$\begin{matrix} {{Ball}\mspace{14mu} {Distance}\mspace{14mu} {Score}} & \; \\ {{B\lbrack i\rbrack} = \frac{1}{1 + \left( {\beta*{\overset{\_}{r_{ik}}}} \right)^{2}}} & {{Eq}.\mspace{14mu} 32} \end{matrix}$

The composite threat score T_(composite)[i] for offensive player i accounting for threat scores, is shown in Equation 33 where:

-   -   W_(physicalMovement), W_(skill), W_(dive), W_(ballDistance) are         the weighting factors for physical movement, skill, dive, and         ball distance threat scores, respectively;     -   P[i] is the physical movement score;     -   Ω[i] is the skills capability score computed using Equation 26         or Equation 27, depending on whether offensive player i is the         ball possessor;     -   D[i] is the dive threat score; and     -   B[i] is the ball distance threat score;

$\begin{matrix} {{Composite}\mspace{14mu} {Threat}\mspace{14mu} {Score}} & \; \\ {{T_{composite}\lbrack i\rbrack} = {{W_{physicalMovement}*{P\lbrack i\rbrack}} + {W_{skill}*{\Omega \lbrack i\rbrack}*{+ W_{dive}}*{D\lbrack i\rbrack}} + {W_{ballDistance}*{B\lbrack i\rbrack}}}} & {{Eq}.\mspace{14mu} 33} \end{matrix}$

Player Artificial Intelligence

The Player Artificial Intelligence system dictates the movements and actions of computer controlled players. The most common play mode for basketball simulation games is for one game player to control one team composed of five players. Because the game player can only provide direct control of one out of five players at a single time, player artificial intelligence of the other four players is critical in creating the appropriate game flow and simulation accuracy. The Player Artificial Intelligence comprises Defensive Positioning, Offensive Positioning, and an Action Analyzer.

The term anchor point is used to refer to the default position of a defensive player. This position is defined differently depending on the type of defense being played by each defensive player. Therefore the anchor point system does not preclude an all-zone or all-man defense, and any hybrid defensive scheme (e.g., “box and 1”, “triangle and 2”, “1 man zone”, etc.) can be defined within the framework of this system.

In FIG. 11, the relationship between defensive player k and corresponding anchor point P_(anchor)[k] (represented by node with anchor symbol) is shown for a zone defense. The anchor point P_(anchor)[k] is placed at a fixed spot on the court depending on the basketball position (guard, forward, center) and zone defensive scheme (3-2, 2-3, 1-2-2, etc.). In the absence of external forces, defensive player k's position coincides with anchor point P_(anchor)[k]. If an external force acts upon defensive player k and causes a positional displacement, a spring damper 110 applies the necessary force to bring points back into co-location.

In FIG. 12, the relationship between and corresponding anchor point (represented by node with anchor symbol) is shown for man defense.

The relationship between the anchor point and the position of defensive player k remains a spring damper 120, but now the anchor point is not defined as a static, court-relative position. The anchor point P_(anchor)[k] is defined as an offensive player relative position, linearly interpolated between the direction the hoop 122 and direction of offensive player velocity. The exact relationship is shown in Equation 34, where:

-   -   P_(position)[i] is the position of offensive player i;     -   Δg is the tunable desired distance between offensive player i         and defensive player k;     -   h_(i) is the vector from offensive player i to the hoop;     -   V_(i) is the velocity vector of offensive player i; and

$\beta = \frac{V_{i}}{V_{\max}}$

and is the factor of interpolation between the two input vectors.

$\begin{matrix} {{Anchor}\mspace{14mu} {Point}\mspace{14mu} \left( {{Man}\mspace{14mu} {Defense}} \right)} & \; \\ {{P_{anchor}\lbrack k\rbrack} = {{P_{position}\lbrack i\rbrack} + {\Delta \; {g\left( {{\left( {1 - \beta} \right)\frac{\overset{\_}{h_{i}}}{\overset{\_}{h_{i}}}} + {\beta*\frac{\overset{\_}{V_{i}}}{\overset{\_}{V_{i}}}}} \right)}}}} & {{Eq}.\mspace{14mu} 34} \end{matrix}$

Help defense in an embodiment of the simulation is modeled using Coulomb's Law. Coulomb's Law is a fundamental relationship in the field of electromagnetism expressing electrostatic force F between discrete charges. For the particular case of systems of discrete charges, the relationship is shown in Equation 35, where:

-   -   ε₀ is the electric constant of vacuum permittivity;     -   q is the reference test charge;     -   q_(i) is a charge i within the discrete charge system;     -   N is the number of discrete charges in system;     -   r is the position of the reference test charge; and     -   r_(i) is the position of a charge i relative to the reference         test charge q.

$\begin{matrix} {{{Coulomb}'}s\mspace{14mu} {Law}\mspace{14mu} \left( {{System}\mspace{14mu} {of}\mspace{14mu} {Discrete}\mspace{14mu} {Charges}} \right)} & \; \\ {F = {\frac{q}{4*\pi*ɛ_{0}}*{\sum\limits_{i = 0}^{N - 1}\; \frac{q_{i}*\left( {\overset{\_}{r} - \overset{\_}{r_{i}}} \right)}{{{\overset{\_}{r} - \overset{\_}{r_{i}}}}^{3}}}}} & {{Eq}.\mspace{14mu} 35} \end{matrix}$

The concepts of discrete charges and the game of basketball are related by replacing point charges with player threat assessments, as described above. The resulting equation for adjusted defensive position P_(adjusted)[k]; of defensive player k is shown in Equation 36, where:

-   -   P_(anchor)[k] is the default defensive position;     -   ΔP is the offset in position due to network of discrete threats;     -   α and β are tunable scale values for position offset parameter         ΔP;     -   γ[k] is the help tendency parameter for defensive player k,         which also scales the magnitude of position offset parameter ΔP;     -   T_(composite)[j], applicable only if the defensive player k is         in man defense, is a measure of the composite threat assessment         of defensive player k's assigned man, denoted here as offensive         player j (thus, the higher the threat assessment of offensive         player j, the less help defensive player k is able to provide;         if defensive player k is playing a zone defense, then         T_(composite)[j]=0);     -   T_(max) is the maximum composite threat assessment value         possible for an offensive player;     -   T_(composite)[i] is the composite threat assessment for         offensive player;     -   N is the number of offensive players (if defensive player k is         playing man defense, defensive player k's assigned man j is not         included in this set);     -   r _(ki) is the distance from defensive player k's default         defensive position P_(anchor)[k] to offensive player i's anchor         point; and     -   Ω is a discriminating parameter.

$\begin{matrix} {{Defensive}\mspace{14mu} {Position}\mspace{14mu} {Due}\mspace{14mu} {to}\mspace{14mu} {Attractive}\mspace{14mu} {Forces}} & \; \\ {{P_{adjusted}\lbrack k\rbrack} = {{P_{anchor}\lbrack k\rbrack}\overset{\overset{\Delta \; P}{}}{{+ \frac{1}{4*\pi}}\alpha*{\gamma \lbrack k\rbrack}*\left( {1 - \frac{T_{composite}\lbrack j\rbrack}{T_{\max}}} \right)*{\sum\limits_{i = 0}^{N - 1}\; {\frac{\left( {T_{composite}\lbrack i\rbrack} \right)^{\Omega}}{1 + \left( {\beta*{\overset{\_}{r_{ki}}}} \right)^{2}}*\overset{\_}{r_{ki}}}}}}} & {{Eq}.\mspace{14mu} 36} \end{matrix}$

Several modifications are made to Coulomb's original expression, most notably, the interpretation of attractive force as a positional displacement. The relationship between anchor point P_(anchor)[k] and defensive player k's position is represented as a spring damper connection, as described above. Thus, an external force acting on defensive player k ultimately translates into a positional displacement. Directly interpreting the force as a positional offset avoids unnecessary complexity without loss of accuracy. Additionally, a 1 term is added to denominator inside summation to keep the term upper bounded.

Additional scaling factors α and β are added to provide system level control of help behavior, while the help tendency parameter γ[k] allows control at the player resolution. Also, the test charge from Coulomb's equation is always set to 1, as a defender's capability should be independent of his help tendency which is already quantified by the parameter γ[k]. Other differences include adding a discriminating factor Ω to help spread out and magnify differences in threat assessments, ignoring the attraction force to the assigned defensive player for man defense, and position offset trimming which is described in detail above.

An offensive player i's threat assessment represents player i's local advantage. Assuming that offensive players are stationary, as defensive players are drawn closer by the attractive force created by this advantage the cumulative defensive effect increases until an equilibrium state is reached. At this equilibrium state each defensive player feels an equal pull from each offensive player. Stated in terms of Equation 36, P_(adjusted)[k] is computed continuously for each time step yielding different values until converging to a single value, at which point P_(adjusted)[k]=P_(equilibrium)[k].

Position offset trimming ensures that the position offset ΔP computed from Equation 36 does not make the defensive player travel directly through an offensive player. In the context of the game of basketball, this would likely constitute a foul and, thus, an undesirable behavior. The process of position offset trimming is shown in FIG. 13, where:

-   -   v ₂ is the computed displacement ΔP;     -   v ₁ is vector from defender to an offensive player;     -   θ₁ is the angle between v ₂ and v ₁; and     -   v ₃ is the resulting trimmed position offset.

Position offset ΔP is only magnitude limited to ∥ v ₁∥ if θ₁<θ_(threshold), where θ_(threshold) is a tunable parameter.

Using the threat assessments, a system is constructed to control the positioning of offensive players. From FIG. 8, it can be seen that an offensive player's static shoot capability produces a continuous surface of more or less decreasing capability with increasing range from goal. Taking into account the current capabilities and positions of defensive players produces the dynamic assessment for the shoot capability which can also be viewed as a continuous surface across position parameter δ. In the context of other kinds of simulations, such a surface may have any number of dimensions.

A player's shoot capability is one input to composite threat assessment T_(composite)[i] held and each capability across position parameter δ produces a similar surface. The combination of all capability surfaces across position parameter δ in the manner shown in Equation 32 produces a continuous composite threat assessment surface T_(composite)(i,δ). One optimizing criteria for the position of an offensive player i is to maximize this threat assessment parameter T_(composite)(i,δ).

Besides optimization for maximum threat, an offensive player in the game of basketball attempts to “space the floor.” While moving to position δ may result in higher T_(composite)(i,δ) value for offensive player i, having multiple players occupy the same space is an undesirable result. To spread out the court, a spacing score S_(spacing)(i,δ) is assessed for each position δ. The computation of S_(spacing)(i,δ) is similar to the calculation of positional offset ΔP of a defensive player presented in Equation 34. Key modifications to Equation 34 are:

-   -   computing a repulsive instead of attractive force;     -   considering players on the same team and not the opposite team         as the system of discrete threat assessments; and     -   converting the resultant force to a percentage of maximum         allowable force.

By using a modified version of Equation 34, the relative threat assessments of offensive players is considered as a spacing criterion. The result of this algorithm is that offensive players with greater current threat are given more space to operate, mirroring the behavior and considerations of real-world basketball players. Along with T_(composite)(i,δ) the parameter S_(spacing)(i,δ) is used as an optimizing criterion for the position of offensive player i.

Gradient search algorithms work by iteratively moving in the direction of highest optimality along a given surface and finding a local optimum. The computation of a gradient at a given time step is shown in FIG. 14, where:

-   -   +Δx, −Δx, +Δz and −Δz are equal magnitude offsets along         orthogonal horizontal axes x and z from offensive player o₁;     -   G_(composite)(i,δ) is the composite gradient search value for         player i at position δ and is the term to be maximized by the         gradient search (G_(composite)(i,δ) is computed for positions         δ=P[0], P[0]+Δx, P[0]−Δx, P[0]+Δz and P[0]−Δz, where P[0] is the         current position of player i; and     -   V_(max) is the direction of movement vector of a tunable         magnitude (if none of the G_(composite)(i,δ) values for the         delta positions exceed that of the current position, no movement         takes place as the offensive player i is already at a local         optimal point; otherwise, the direction of V_(max) is linearly         interpolated between maximum directions along each axis with         G_(composite)(i,δ) as the interpolating factor).

The composite gradient search value G_(composite)(i,δ) for player i at position δ is computed as shown in Equation 37 where:

-   -   T_(composite)[i,δ] is the composite threat assessment;     -   S_(spacing)(i,δ) is the spacing score; and     -   W_(spacing) is a tunable weighting factor determining relative         importance of parameters T_(composite)[i,δ] and         S_(spacing)(i,δ).

G _(composite)(i,δ)=(1−W _(spacing))*T _(composite)(i,δ)+W _(spacing) *S _(spacing)(i,δ)  Eq.37: Composite Gradient Search Value

System-tuning parameters as well as player aggressiveness static parameters are used to control player movement tendencies. An offensive player i will only move if the gradient value G_(composite)(i,δ) satisfies the inequality shown in Equation 38 where:

-   -   α is the tunable scaling factor for offensive movement tendency;         and     -   A_(staticOff)[i] is the static parameter of offensive         aggressiveness;

G _(composite)(i,δ)>α*A _(staticOff) [i]  Eq.38: Offensive Movement Tendency

Based on the static and dynamic parameters of the participating players, the Interaction Handler determines a probability of success for a given initiating action. This probability value, along with player static parameters, is used by the Action Analyzer to determine if a given action is initiated. Offensive and defensive aggressiveness parameters A_(staticOff)[i] and A_(staticDef)[k], respectively, provide probability of success threshold which must be satisfied for player i to initiate a given action. For instance, the strip outcome inequality from Equation 9 would become Equation 39:

S[k]−D _(overall) [i]−x _(rand)>(1−A _(staticDef) [k])  Eq.39: Example Action Analyzer Threshold (Strip)

The previous detailed example represents one or more embodiments of the present invention. The game of basketball was chosen as a representative game of movement and position, with a specific set of rules and limitations. The proposed simulation model is in no way limited to the game of basketball. More complex dynamic games and simulations of motion and position with larger number of participants, more interactions, less restrictions, increased uncertainty, and different environmental factors can be constructed using the fundamental concepts discussed herein without departing from the intended scope of the invention.

For example, the size and complexity of the dynamic game or simulation of motion and position can theoretically be increased to an arbitrarily large value number N of offensive, defensive, and goal entities. In practice, because computational load increases exponentially with number of entities a finite limit may exist. However, optimizations and localization of effect can significantly reduce computational load. An exemplary abstract game is shown in FIG. 15 where:

-   -   Nodes o_(1 . . . 8) represent 8 offensive entities;     -   Nodes d_(1 . . . 8) represent 8 defensive entities; and     -   Nodes g_(1 . . . 3) represent 3 goal entities.

One of reasonable skill in the art would be able to apply the concepts outlined herein to many different simulation scenarios in many different applications. For example, the present invention may be applied to many different sports simulation video games as well as simulator programs and systems, such as flight simulators, for example. Thus, although the present invention has been described in detail with reference to certain embodiments thereof, other versions are possible. Therefore, the spirit and scope of the invention should not be limited to the versions described above. 

I claim:
 1. A system for calculating game events, comprising: an input module configured to receive game entity information; a storage module configured to store constants related to at least one game entity; a physics module connected to apply game physics rules to information received in said input module and said constants; a balance simulation module connected to control stability and movement of game entities using values from said physics module; an interaction handler module which combines input module outputs and balance simulation module outputs with game entity interaction rules to generate game entity events; an artificial intelligence module which determines actions of system controlled entities by combining game entity event information from said modules with game entity threat information; and a game entity event output module for outputting game event simulation values.
 2. The system of claim 1, wherein said input module can receive said game entity information from said artificial intelligence module and/or from user input.
 3. The system of claim 1, wherein balance simulation module comprises a stability meter module and a movement module.
 4. The system of claim 3, wherein said movement module contains information defining game entity movement capability.
 5. The system of claim 3, wherein said stability meter module measures a sense of balance for said at least one game entity.
 6. The system of claim 1, wherein said artificial intelligence module comprises a threat assessor module which models said game entity threat information onto an n-dimensional space and outputs artificial intelligence game entity instructions based on information related to said n-dimensional space, said threat assessor module accepting inputs from said balance simulation module and said interaction handler.
 7. The system of claim 6, wherein said threat assessor module determines said artificial intelligence game entity instruction output by performing a gradient search on said continuous n-dimensional space around a game entity for a preferred event instruction.
 8. The system of claim 1, further comprising a graphics engine module connected to render said game event simulation values for display. 